package per.vivicat;

public class Array2 {
	public static void main(String[] args){
		int[] arr=new int[]{1, 2, 3, 2, 5, 2};
		//System.out.println(squareUp(2));
	}
	public static int countEvens(int[] nums) {
		int count=0;
		for(int i=0;i<nums.length;i++){
			if(nums[i]%2==0)count++;
		}
		return count;
	}
	
	public int bigDiff(int[] nums) {
		int min=nums[0],max=nums[0];
		for(int i=1;i<nums.length;i++){
			min=Math.min(min,nums[i]);
			max=Math.max(max,nums[i]);
		}
		return max-min;
	}
	public int centeredAverage(int[] nums) {
		int min=nums[0],max=nums[0],sum=0;
		for(int i=1;i<nums.length;i++){
			min=Math.min(min,nums[i]);
			max=Math.max(max,nums[i]);
		}
		for(int i=0;i<nums.length;i++){
			sum+=nums[i];
		}
		return (sum-max-min)/(nums.length-2);
	}
	
	public int sum13(int[] nums) {
		int sum=0;
		if(nums.length==0)
			return 0;
		for(int i=0;i<nums.length;i++){
			if(nums[i]==13)
				i++;
			else sum+=nums[i];
		}
		return sum;
	}
	
	public static int sum67(int[] nums) {
		int sum=0;
		if(nums.length==0)
			return 0;
		for(int i=0;i<nums.length;i++){
			if(nums[i]==6){
				for(int j=i+1;j<nums.length;j++)
					if(nums[j]==7){
						i=j;break;
					}
			}
			else
				sum+=nums[i];
		}
		return sum;
	}
	
	public boolean has22(int[] nums) {
		for(int i=0;i<nums.length-1;i++){
			if(nums[i]==2&&nums[i+1]==2)
				return true;
		}
		return false;
	}
	
	public boolean lucky13(int[] nums) {
		for(int i=0;i<nums.length;i++){
			if(nums[i]==1||nums[i]==3)return false;
		}
		return true;
	}
	
	public boolean sum28(int[] nums) {
		int sum=0;
		for(int i=0;i<nums.length;i++){
			if(nums[i]==2)
				sum+=2;
		}
		return sum==8;
	}
	
	public boolean more14(int[] nums) {
		int count=0;
		for(int i=0;i<nums.length;i++){
			if(nums[i]==1)
				count++;
			if(nums[i]==4)
				count--;
		}
		return count>0;
	}
	
	public int[] fizzArray(int n) {
		int[] arr=new int[n];
		for(int i=0;i<n;i++){
			arr[i]=i;
		}
		return arr;
	}
	
	public boolean only14(int[] nums) {
		for(int i=0;i<nums.length;i++){
			if(nums[i]!=1&&nums[i]!=4){
				return false;
			}
		}
		return true;
	}
	
	public String[] fizzArray2(int n) {
		String strs[]=new String[n];
		for(int i=0;i<n;i++){
			strs[i]=String.valueOf(i);
		}
		return strs;
	}
	
	public boolean no14(int[] nums) {
		boolean a=false,b=false;
		for(int i=0;i<nums.length;i++){
			if(nums[i]==1)
				a=true;
			if(nums[i]==4)
				b=true;
		}
		return !(a&&b);
	}
	
	public boolean isEverywhere(int[] nums, int val) {
		for(int i=0;i<nums.length-1;i++){
			if(nums[i]!=val&&nums[i+1]!=val)
				return false;
		}
		return true;
	}
	
	public boolean either24(int[] nums) {
		boolean a=false,b=false;
		for(int i=0;i<nums.length-1;i++){
			if(nums[i]==2&&nums[i+1]==2)
				a=true;
			if(nums[i]==4&&nums[i+1]==4)
				b=true;
		}
		return a^b;
	}
	
	public int matchUp(int[] nums1, int[] nums2) {
		int count=0;
		for(int i=0;i<nums1.length;i++){
			int dif=Math.abs(nums1[i]-nums2[i]);
			if(dif>0&&dif<=2)
				count++;
		}
		return count;
	}
	
	public boolean has77(int[] nums) {
		for(int i=0;i<nums.length-2;i++){
			if(nums[i]==7)
				if(nums[i+2]==7)return true;
		}
		for(int i=0;i<nums.length-1;i++){
			if(nums[i]==7)
				if(nums[i+1]==7)return true;
		}
		return false;
	}
	
	public boolean has12(int[] nums) {
		for(int i=0;i<nums.length-1;i++){
			if(nums[i]==1){
				for(int j=i+1;j<nums.length;j++){
					if(nums[j]==2)return true;
				}
				return false;
			}
		}
		return false;
	}
	
	public boolean modThree(int[] nums) {
		if(nums.length>2){
			for(int i=0;i<nums.length-2;i++){
				if((nums[i]%2==0&&nums[i+1]%2==0&&nums[i+2]%2==0)
						||(nums[i]%2==1&&nums[i+1]%2==1&&nums[i+2]%2==1))
					return true;
			}
		}
		return false;
	}
	
	public boolean haveThree(int[] nums) {
		int count=0;
		for(int i=0;i<nums.length;i++){
			if(nums[i]==3)
				count++;
		}
		if(count==3){
			for(int i=1;i<nums.length-1;i++){
				if(nums[i]==3)
					if(nums[i-1]==3||nums[i+1]==3)return false;
			}
			return true;
		}
		return false;
	}
	
	public boolean twoTwo(int[] nums) {
		int count=0;
		for(int i=0;i<nums.length;i++){
			if(nums[i]==2)
				count++;
		}
		if(count==0)
			return true;
		if(count!=1){
			for(int i=0;i<nums.length;i++){
				if(nums[i]==2){
					for(int j=i+1;j<nums.length;j++){
						if(nums[j]==2&&nums[j-1]!=2)return false;
					}
					return true;
				}
			}
		}
		return false;
	}
	
	public static boolean sameEnds(int[] nums, int len) {
		for(int i=0;i<len;i++){
			if(nums[i]!=nums[nums.length-len+i])
				return false;
			if(i+1==len)
				return true;
		}
		return true;
	}
	
	public boolean tripleUp(int[] nums) {
		for(int i=0;i<nums.length-2;i++){
			if(nums[i]+1==nums[i+1]&&nums[i]+2==nums[i+2])
				return true;
		}
		return false;
	}
	public int[] fizzArray3(int start, int end) {
		int[] arr=new int[end-start];
		for(int i=0;i<end-start;i++){
			arr[i]=start+i;
		}
		return arr;
	}
	
	public int[] shiftLeft(int[] nums) {
		int temp =0;
		int nl=nums.length;
		if(nl!=0)
			temp=nums[0];
		for(int i=0;i<nums.length-1;i++){
			nums[i]=nums[i+1];
		}
		if(nl!=0)
		nums[nums.length-1]=temp;
		return nums;
	}
	
	public int[] tenRun(int[] nums) {
		for(int i=0;i<nums.length-1;i++){
			if(nums[i]%10==0)
				for(int j=i+1;j<nums.length;i++){
					if(nums[j]%10!=0)
						nums[j]=nums[i];
					else 
						i=j-1;break;
				}
		}
		return nums;
	}
	
	public int[] pre4(int[] nums) {
		int count1=0,count2=0;
		for(int i=0;i<nums.length;i++){
			if(nums[i]!=4)count1++;
			else break;
		}
		int[] arr=new int[count1];
		for(int i=0;i<nums.length;i++){
			if(nums[i]!=4){
				arr[count2]=nums[i];count2++;
			}
			else break;
		}
		return arr;
	}
	
	public int[] post4(int[] nums) {
		int count1=0,count2=0;
		for(int i=0;i<nums.length;i++){
			if(nums[i]==4)count1=i;
		}
		int[] arr=new int[nums.length-1-count1];
		for(int i=count1+1;i<nums.length;i++){
				arr[count2]=nums[i];count2++;
		}
		return arr;
	}
	
	public static int[] notAlone(int[] nums, int val) {
		for(int i=1;i<nums.length-1;i++){
			if(nums[i]==val&&nums[i-1]!=val&&nums[i+1]!=val){
				if(nums[i-1]>nums[i+1])nums[i]=nums[i-1];
				else nums[i]=nums[i+1];
			}
		}
		return nums;
	}
	
	public int[] zeroFront(int[] nums) {
		int temp;
		for(int i=0;i<nums.length;i++){
			if(nums[i]!=0){
				for(int j=nums.length-1;j>i;j--){
					if(nums[j]==0){
						temp=nums[i];nums[i]=nums[j];nums[j]=temp;
					}
				}
			}
		}
		return nums;
	}
	
	public int[] withoutTen(int[] nums) {
		int nl=nums.length,count=0;
		int[] arr=new int[nl];
		for(int i=0;i<nl;i++){
			if(nums[i]!=10){
				arr[count]=nums[i];
				count++;
			}
		}
		for(;count<nl;count++){
			arr[count]=0;
		}
		return arr;
	}
	
	public int[] zeroMax(int[] nums) {
		int maxodd=0;
		for(int i=0;i<nums.length-1;i++){
			if(nums[i]==0){
				for(int j=i+1;j<nums.length;j++){
					if(nums[j]%2!=0&&maxodd<nums[j])
						 maxodd=nums[j];
				}
				nums[i]=maxodd;
				maxodd=0;
			}
		}
		return nums;
	}

	public int[] evenOdd(int[] nums) {
		int[] arr=new int[nums.length];
		int count=0;
		for(int i=0;i<nums.length;i++){
			if(nums[i]%2==0){
				arr[count]=nums[i];count++;
			}
		}
		for(int i=0;i<nums.length;i++){
			if(nums[i]%2!=0){
				arr[count]=nums[i];count++;
			}
		}
		return arr;
	}
	
	public String[] fizzBuzz(int start, int end) {
		int len=end-start,a=start,b=end;
		String[] arr=new String[len];
		for(int i=0;i<len;i++){
			if((a+i)%3==0&&(a+i)%5==0)
				arr[i]="FizzBuzz";
			else if((a+i)%3==0)arr[i]="Fizz";
			else if((a+i)%5==0)arr[i]="Buzz";
			else arr[i]=String.valueOf(a+i);
		}
		return arr;
	}
}	
